ЛЕМА ЗА РАЗРАСТВАНЕ ЗА БЕЗКОНТЕКСТНИТЕ ЕЗИЦИ

     Ще предполагаме, че е дадена една азбука S. За една дума z над S ще казваме, че допуска вариране от втори вид в даден език L над S, ако може да се представи във вида z=uxvyw, където u, x, v, y, w са думи над S, поне една от думите x и y не е празна и думата uxrvyrw принадлежи на L при r=0,1,2,3,... (словосъчетанието "от втори вид" е включено във въведения термин, за да се отличава той от друг подобен термин, имащ връзка с лемата за разрастване за автоматните езици). Очевидно всяка дума над S, удовлетворяваща горното условие по отношение на даден език L, принадлежи на L, но обратното твърдение далеч не винаги е вярно (например поне поради това, че въпросното условие не може да бъде изпълнено в случая на краен език L или пък за дума от L, имаща най-малката възможна дължина). За безконтекстните езици обаче е вярно едно твърдение, близко в известен смисъл до споменатото обратно твърдение.

     Лема за разрастване за безконтекстните езици. Ако един безкраен език L над азбуката S е безконтекстен, то всички думи от този език с изключение само на краен брой измежду тях допускат вариране от втори вид в L.

     За доказателството на горното твърдение ще въведем някои помощни понятия и ще докажем две предварителни леми.

     Нека G=(N,S,P) е безконтекстна нескъсяваща граматика над S. Ако Z е символ от N, а z е дума над S, то ще наричаме регулярен път в G от Z към z всяка крайна редица от думи от множеството S*ґ N ґ S*, която има начален член Z и удовлетворява условията: а) всеки неин член след началния (ако редицата има повече от един член) е изводим в G от предхождащия го и има по-голяма дължина от него; б) думата z е изводима в G от последния член на редицата.

     Ако съществува регулярен път в G от символа Z към думата z от S*, то очевидно z е изводима от Z в G. Обратното е вярно по тривиална причина - ако z е изводима от Z в G, то едночленната редица с единствен член Z представлява регулярен път в G от Z към z. Могат да се дадат обаче и по-интересни примери.

     Пример 1. Нека S={a,f}, N={T}, S=T, P={T®a, T®fTT} (от гледна точка на математическата логика езикът на така дефинираната граматика G се състои от термовете, образувани с помощта само на константа a и на двуместен функционален символ f, но при запис с пропуснати скоби). Тогава думата fafaa е изводима от T в G и освен едночленната редица с единствен член T още следните редици са регулярни пътища в G от T към въпросната дума: (T,fTfaa), (T,faT), (T,fafTa), (T,fafaT), (T,faT,fafTa), (T,faT,fafaT).

     Следната лема хвърля светлина върху връзката между регулярните пътища и варируемостта от втори вид.

     Достатъчно условие за варируемост от втори вид. Нека G=(N,S,P) е безконтекстна граматика над S и нека броят на символите в множеството N е n. Ако съществува n+1-членен регулярен път в G от S към дадена дума z от S*, то думата z допуска вариране от втори вид в езика на G.

     Доказателство. Нека z е дума от S* и нека е налице някой n+1-членен регулярен път в G от S към z. Той ще има вида (u1V1w1, ..., un+1Vn+1wn+1), където V1, ..., Vn+1 са символи от N, а u1, ..., un+1, w1, ..., wn+1 са думи от S*. В редицата (V1,...,Vn+1) ще има някои два съвпадащи члена с различни номера. Нека имаме Vi=Vj, където 1 ≤ i < jn+1. Тъй като думата ujVjwj е изводима в G от думата uiViwi, мултипликативното свойство на изводимостта в G позволява да заключим, че ujVjwj = uiswi, където s е дума, изводима в G от символа Vi. При това думата s е с дължина, по-голяма от 1, поради неравенството |ujVjwj| > |uiViwi|. Понеже думата ui не съдържа буквата Vj, ясно е, че дължината на ui не надминава дължината на uj и следователно uj=uix за някоя дума x от S*. Аналогично виждаме, че wj=ywi за някоя дума y от S*. Следователно имаме равенството uixVjywi = uiswi. От него следва, че s=xVjy=xViy и значи някоя от думите x и y не е празна. Като използваме равенството s=xViy и изводимостта на s от Vi в G, доказваме индуктивно, че думата xrViyr е изводима в G от Vi за всяко неотрицателно цяло число r. Сега ще използваме още и обстоятелството, че думата z е изводима в G от думата ujVjwj, която е всъщност думата ujViwj. От него пак с помощта на мултипликативното свойство на изводимостта в G следва, че z=ujvwj, където v е някоя дума от S*, изводима в G от Vi. Като заместим uj и wj с получените преди малко изрази за тях, стигаме до равенството z=uixvywi. При това за всяко неотрицателно цяло число r думата uixrvyrwi принадлежи на езика на G, защото е от S* и е изводима в G от думата uixrViyrwi, която пък от своя страна е изводима от изводимата от S дума uiViwi. С това показахме, че думата z допуска вариране от втори вид в езика на G (ролята на u и w от дефиницията за варируемост от втори вид играят съответно ui и wi).

     Пример 2. Нека G е граматиката от пример 1. Тогава всяка дума от езика на G с изключение на еднобуквената дума a е изводима в G от думата fTT и следователно има вида fz1z2, където z1 и z2 също принадлежат на разглеждания език. При това положение например двучленната редица (T,fTz2) ще представлява регулярен път от T към разглежданата дума. Оттук и от доказаната по-горе лема става ясно, че всички думи от езика на G, различни от еднобуквената дума a, допускат вариране от втори вид в споменатия език.

     Връщайки се отново към случая, когато G=(N,S,P) е произволна безконтекстна граматика над S, за всяко неотрицателно цяло число m и всеки символ Z от N да означим с Km,Z множеството на онези думи от S*, изводими от Z в G, към които в G няма регулярен m+1-членен път от Z. За всяко дадено неотрицателно цяло число m нека Km да бъде обединението на множествата  Km,Z , отговарящи на отделните символи Z от N.

     Пример 3. Ако G е граматиката, за която става дума в предходните два примера, то K0 = Ж,  K1 = K1,T = {a},  K2 = K2,T = {a,faa}.

     Едно правило на граматиката G се нарича преименуващо, ако не само лявата му страна, но и дясната е символ от N (разбира се в конкретната граматика от разгледаните примери няма такива правила).

     Рекурентна лема за множествата Km. Нека m е произволно неотрицателно цяло число, а z е дума от множеството Km+1 . Тогава z е дясна страна на правило от P или може да се получи от някоя дясна страна на непреименуващо правило от P чрез заместване на участващите в нея символи от N с думи от множеството Km .

     Доказателство. Нека Z е такъв символ от N, че  zОKm+1,Z . Понеже думата z е изводима от Z в G и не е символ от N, тя е изводима от някоя изводима от Z дясна страна на непреименуващо правило от P. Ако въпросната дясна страна принадлежи на S*, то z ще съвпада с нея. Ако пък тази дясна страна не принадлежи на S*, тя ще има вида t0Z1t1...tk-1Zktk , където k ≥ 1, Z1, ..., Zk са символи от N, а t0, t1, ..., tk-1, tk принадлежат на S*. От мултипликативното свойство на изводимостта в G следва, че z = t0z1t1...tk-1zktk , където z1, ..., zk са думи от S*, изводими в G съответно от Z1, ..., Zk. Нека i е произволно измежду числата 1, ..., k. Да допуснем, че съществува регулярен път в G от Zi към zi, който е с m+1 члена, и да разгледаме един такъв път (s1,...,sm+1). Да положим

u = t0z1t1...ti-1w = tizi+1ti+1...tk-1zktk
(при i = 1 и при i = k считаме съответно, че u = t0 и че w = tk). Тъй като правилото, с чиято дясна страна имаме работа, не е преименуващо, поне една от думите u и w не е празна. Но тогава за редицата (Z, us1w, ..., usm+1w) лесно се заключава, че ще бъде регулярен път в G от Z към z, а това е невъзможно, защото дължината на тази редица е m+2. Полученото противоречие показва, че  ziОKm,Zi  и следователно  ziОKm .

     Следствие. За всяко неотрицателно цяло число m съответното множество Km е крайно.

     Доказателство. Ще използваме индукция относно m. При m = 0 твърдението е вярно - имаме K0,Z = Ж за всеки символ Z от N, тъй като от Z към всяка дума от S*, изводима от Z в G, съществува едночленен регулярен път в G. Да предположим сега, че за дадено неотрицателно цяло число m множеството Km е крайно. Тъй като десните страни на правилата от P са крайно много, това предположение заедно с доказаната лема гарантира, че и множеството Km+1 е крайно.

     Сега вече е лесно да се убедим във верността на изказаната в началото лема за разрастване за безконтекстните езици. Нека L е безконтекстен език над азбуката S*, който е безкраен, и нека множеството на непразните думи от L се поражда от безконтекстната граматика G=(N,S,P). Да означим с n броя на символите от множеството N. Съгласно току-що доказаното следствие множеството Kn е крайно. Да разгледаме произволна дума z от L, непринадлежаща на множеството KnИ{e}. Тя ще бъде дума от езика на G, непринадлежаща на Kn , а следователно и на Kn,S . Оттук следва, че съществува n+1-членен регулярен път в G от S към z. Благодарение на достатъчното условие за варируемост от втори вид това гарантира, че думата z допуска вариране от втори вид в езика на G, а значи и в езика L. По този начин доказахме, че всички думи от езика L допускат вариране в него с евентуално изключение само на такива измежду тях, които принадлежат на крайното множество KnИ{e}.

  Последно изменение: 25.01.2003 г.